home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / dev / src / ConfigFileSrc.lha / ConfigFileSrc12 / Library / Funcs / Add.c next >
Encoding:
Text File  |  1997-10-02  |  4.3 KB  |  169 lines

  1. /*
  2. **        $PROJECT: ConfigFile.library
  3. **        $FILE: Add.c
  4. **        $DESCRIPTION: cf_Add#?() functions
  5. **
  6. **        (C) Copyright 1996-1997 Marcel Karas
  7. **             All Rights Reserved.
  8. */
  9.  
  10. IMPORT struct ExecBase    * SysBase;
  11.  
  12. /****** configfile.library/cf_AddArgument ************************************
  13. *
  14. *   NAME
  15. *        cf_AddArgument -- Adds an argument node to the argument list of a
  16. *                          group node.
  17. *
  18. *   SYNOPSIS
  19. *        cf_AddArgument(GrpNode,ArgNode);
  20. *                       A0      A1
  21. *
  22. *        VOID cf_AddArgument(CFGroup *,CFArgument *);
  23. *
  24. *   FUNCTION
  25. *        This function adds an argument node to the argument list of a
  26. *        group node.
  27. *
  28. *   INPUTS
  29. *        GrpNode - The group node for add to.
  30. *        ArgNode - Pointer to the argument node.
  31. *
  32. *   EXAMPLE
  33. *        CFGroup    * myGrpNode;
  34. *        CFArgument * myArgNode;
  35. *        CFArgument * myNewArgNode;
  36. *
  37. *        ...
  38. *        myNewArgNode = cf_CloneArgument (myArgNode);
  39. *        cf_AddArgument (myGrpNode, myNewArgNode);
  40. *        ...
  41. *
  42. *   SEE ALSO
  43. *        cf_AddGroup(), cf_AddItem()
  44. *
  45. ******************************************************************************
  46. *
  47. */
  48.  
  49. LibCall VOID cf_AddArgument ( REGA0 iCFGroup * GrpNode , REGA1 iCFArgument * ArgNode )
  50. {
  51.     FuncDe(bug("cf_AddArgument($%08lx,$%08lx)\n{\n", GrpNode, ArgNode));
  52.  
  53.     if ( ( ArgNode->ExtFlags & CF_EFLG_REMOVED ) &&
  54.             ( ArgNode->GrpNode->Header == GrpNode->Header) )
  55.     {
  56.         AddTail ((struct List *) &GrpNode->ArgList, (struct Node *) ArgNode);
  57.  
  58.         ArgNode->GrpNode             = GrpNode;
  59.         ArgNode->ExtFlags            &= ~CF_EFLG_REMOVED;
  60.         GrpNode->Header->Flags    |= CF_HFLG_CHANGED;
  61.     }
  62.  
  63.     FuncDe(bug("}\n"));
  64. }
  65.  
  66. /****** configfile.library/cf_AddGroup ***************************************
  67. *
  68. *   NAME
  69. *        cf_AddGroup -- Adds a group node to the group list of a header.
  70. *
  71. *   SYNOPSIS
  72. *        cf_AddGroup(Header,GrpNode);
  73. *                    A0     A1
  74. *
  75. *        VOID cf_AddGroup(CFHeader *,CFGroup *);
  76. *
  77. *   FUNCTION
  78. *        This function adds a group node to the group list of a header.
  79. *
  80. *   INPUTS
  81. *        Header - Pointer to the Header for add to.
  82. *        GrpNode - Pointer to the group node.
  83. *
  84. *   EXAMPLE
  85. *        CFHeader * myHeader;
  86. *        CFGroup  * myGrpNode;
  87. *        CFGroup  * myNewGrpNode;
  88. *
  89. *        ...
  90. *        myNewGrpNode = cf_CloneGroup (myGrpNode);
  91. *        cf_AddGroup (myHeader, myNewGrpNode);
  92. *        ...
  93. *
  94. *   SEE ALSO
  95. *        cf_AddArgument(), cf_AddItem()
  96. *
  97. ******************************************************************************
  98. *
  99. */
  100.  
  101. LibCall VOID cf_AddGroup( REGA0 iCFHeader * Header , REGA1 iCFGroup * GrpNode )
  102. {
  103.     FuncDe(bug("cf_AddGroup($%08lx,$%08lx)\n{\n", Header, GrpNode));
  104.  
  105.     if ( GrpNode->ExtFlags & CF_EFLG_REMOVED && ( Header == GrpNode->Header) )
  106.     {
  107.         AddTail ((struct List *) &Header->GroupList, (struct Node *) GrpNode);
  108.  
  109.         GrpNode->ExtFlags    &= ~CF_EFLG_REMOVED;
  110.         Header->Flags        |= CF_HFLG_CHANGED;
  111.     }
  112.  
  113.     FuncDe(bug("}\n"));
  114. }
  115.  
  116. /****** configfile.library/cf_AddItem ****************************************
  117. *
  118. *   NAME
  119. *        cf_AddItem -- Adds an item node to the item list of an argument
  120. *                      node.
  121. *
  122. *   SYNOPSIS
  123. *        cf_AddItem(Argument,ItemNode);
  124. *                   A0       A1
  125. *
  126. *        VOID cf_AddItem(CFArgument *,CFItem *);
  127. *
  128. *   FUNCTION
  129. *        This function adds an item node to the item list of an argument
  130. *        node.
  131. *
  132. *   INPUTS
  133. *        ArgNode - The argument node for add to.
  134. *        ItemNode - Pointer to the item node.
  135. *
  136. *   EXAMPLE
  137. *        CFArgument * myArgNode;
  138. *        CFItem     * myItemNode;
  139. *        CFItem     * myNewItemNode;
  140. *
  141. *        ...
  142. *        myNewItemNode = cf_CloneItem (myItemNode);
  143. *        cf_AddItem (myArgNode, myNewItemNode);
  144. *        ...
  145. *
  146. *   SEE ALSO
  147. *        cf_AddArgument(), cf_AddGroup()
  148. *
  149. ******************************************************************************
  150. *
  151. */
  152.  
  153. LibCall VOID cf_AddItem ( REGA0 iCFArgument * ArgNode , REGA1 iCFItem * ItemNode )
  154. {
  155.     FuncDe(bug("cf_AddItem($%08lx,$%08lx)\n{\n", ArgNode, ItemNode));
  156.  
  157.     if ( ArgNode->ExtFlags & CF_EFLG_REMOVED  &&
  158.             ( ArgNode->GrpNode->Header == ItemNode->ArgNode->GrpNode->Header) )
  159.     {
  160.         AddTail ((struct List *) &ArgNode->ItemList, (struct Node *) ItemNode);
  161.  
  162.         ItemNode->ArgNode                         = ArgNode;
  163.         ItemNode->ExtFlags                    &= ~CF_EFLG_REMOVED;
  164.         ArgNode->GrpNode->Header->Flags    |= CF_HFLG_CHANGED;
  165.     }
  166.  
  167.     FuncDe(bug("}\n"));
  168. }
  169.